草庐IT

C++ STL : Passing an empty container to lower_bound

全部标签

c++ - STL 字符串类中的运算符 char*

为什么STL字符串类没有内置重载的char*运算符?他们有什么特定的理由要避免它吗?如果有的话,那么使用带有C函数的字符串类会变得更加方便。我想知道你的看法。 最佳答案 以下是JosuttisSTL书中的引述:However,thereisnoautomatictypeconversionfromastringobjecttoaC-string.Thisisforsafetyreasonstopreventunintendedtypeconversionsthatresultinstrangebehavior(typechar*of

c++ - STL push_back 优化导致数组下标超出数组边界

测试环境:CentOS7.0g++4.8.2ArchLinuxg++4.9.020140604(预发布版)ArchLinuxg++4.9.1编译命令用例:通过:g++-Wallt.cpp失败:g++-Wall-O2t.cpp通过:g++-Wall-O2t.cpp#并将第13行的2替换为3通过:g++-Wall-O2t.cpp#并注释掉第14行通过:g++-Wall-O2--std=c++11t.cpp#forg++4.8/4.9失败信息:t.cpp:Inmemberfunction‘voidstd::vector::_M_insert_aux(std::vecto::iterator,

c++ - C++ 中 "array of unknown bound of T"的外部声明

我使用g++(7.1)和clang++(xcode9.0)和-std=c++11-Wall编译了以下程序并得到了结果:g++0x10052c0500x10052c0400x10052c040clang++0x108b740240x108b740180x108b74018这意味着externinta[];和staticinta[3];声明相同的实体并具有相同的链接(内部链接)。//a.cpp#includeinta[3];voidf(){printf("%p\n",(void*)a);};//b.cppexternvoidf();staticinta[3];voidg(){printf(

c++ - STL 算法是否针对速度进行了优化?

我正在测试std::vector上不同循环方式的速度。在下面的代码中,我考虑了5种方法来计算N=10000000个元素的vector的所有元素的总和:使用迭代器使用整数索引使用整数索引,按因子2展开使用整数索引,按因子4展开使用std::accumulate代码是用g++forwindows编译的,用于编译的命令行是:g++-std=c++11-O3loop.cpp-oloop.exe我运行代码4次,测量每个方法的时间,我得到以下结果(时间以微秒为单位,给出了最大值和最小值):迭代器:8002-8007整数索引:8004-9003展开2:6004-7005展开4:4001-5004累积

解决java.lang.ArrayIndexOutOfBoundsException: Index x out of bounds for length y

解决java.lang.ArrayIndexOutOfBoundsException:Indexxoutofboundsforlengthy摘要引言1.异常原因2.常见场景2.1访问数组元素时的常见错误2.2循环中的潜在问题3.解决方法3.1验证索引范围3.2使用增强型for循环总结参考资料🧡博主默语带您GotoNewWorld.✍个人主页——默语的博客👦🏻《java面试题大全》🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭《MYSQL从入门到精通》数据库是开发者必会基础之一~🪁吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!

c++ - STL 容器的转发 header

header有伴如果我只需要流的指针或引用,这就足够了。后者是重载时的常见场景operator.STL容器是否有这样的header?我想定义几个引用STL容器的函数,我不想包含,,等。阿尔。完整地列出这些类型,这样我就可以引用这些类型。这个问题是否有标准、提升或其他解决方案? 最佳答案 IstheresuchaheaderfortheSTLcontainers?不,没有。Aretherestandard,boostorothersolutionstothisproblem?据我所知没有。您必须包含这些header。

c++ - 使用 STL 排序就地排序表

我有一个存储为(i,j,k)格式(来自稀疏矩阵)的巨大表(大约50Gb)uint32_t*idx1,*idx2;float*vals;uint32_ttablesize;并且我想使用作为idx1和idx2函数的给定比较函数对其进行适当的排序。这可以使用std::sort完成吗?具体来说,稀疏矩阵中每个值为v的非零条目(i,j)的存储方式是将i放在idx1中,将j放在idx2中,将v放在vals中的相应条目中。然后我想根据(i1,j1,v1)对这些条目进行排序(i1我能够搜集到的关于在非标准数据类型上使用std::sort的示例假设每个被比较的项目都是一个类的单个实例;这里每个项目都由不

c++ - 返回时交换 STL?

很抱歉问了这么长的问题,但我尽量说清楚。这在某种程度上遵循了我之前关于stringsinC++的问题。.我试图弄清楚如何在不分配冗余内存的情况下从函数返回std::string,不依赖NRVO。我不想依赖NRVO的原因是:目前使用的编译器不支持即使支持它也可能不会始终在Debug模式下启用在某些情况下可能会失败(example)请注意,我需要一个C++03兼容的解决方案(因此没有C++0x右值引用,不幸的是......)最简单的方法是通过引用传递并执行std::swap,就像这样voidtest(std::string&res){std::strings;//...res.swap(s

c++ - STL 容器元素是否明确要求 (noexcept) 可破坏?

C++11(和C++14)STL容器有noexcept析构函数和clear()成员函数。这意味着元素应该有noexcept析构函数,或者至少存储在容器中的实际元素在被销毁时不应该抛出任何异常——或者更准确地说,相应的allocator_traits::destroy调用不应抛出。这是否在标准的任何地方指定为要求(明确或由另一个明确要求暗示)?如果不是,为什么?我知道is_nothrow_constructible需要noexcept析构函数,但是is_constructible单独没有,并且容器要求是根据概念而不是类型特征模板指定的。 最佳答案

c++ - 为什么不能将 const 对象放入 STL 容器中?

请参阅下面的代码-我正在尝试将const对象放入vector中。我知道答案是“STL容器要求对象是可分配的和可复制构造的”,但是,在不引用标准的情况下,任何人都可以解释这样做的问题是什么?我不明白为什么不能复制这样的类(除了c++不允许)。它只是一个存储的值,不允许更改-为什么不能将它放在一个vector中,简单地创建另一个这些对象?#include//Attempt1///home/doriad/Test/Test.cxx:3:8:error:non-staticconstmember‘constintMyClass::x’,can’tusedefaultassignmentoper